#pragma once

#include <string>
#include <vector>

namespace Zen
{
	class Utils
	{
	public:
		static Utils* Only();

		virtual std::string GetAppID() = 0;

		virtual std::string GetDeviceID() = 0;

		virtual bool IsResourceExist(std::string const& path) = 0;

		virtual bool IsDocumentExist(std::string const& path) = 0;

		virtual std::vector<uint8_t> LoadResource(std::string const& path) = 0;

		virtual std::vector<uint8_t> LoadDocument(std::string const& path) = 0;

		virtual bool SaveDocument(std::string const& path, void const* value, size_t size) = 0;

		virtual std::vector<uint8_t> LoadURL(std::string const& url) = 0;

		virtual std::string GetSystemLanguage() = 0;

		virtual std::string GetDocumentPath(std::string const& path) = 0;

	protected:
		Utils() = default;
	};
} // namespace Zen
